package com.itfenghuang.day09;

import java.io.*;

public class A03_BufferStream {
    public static void main(String[] args) throws IOException {
        /**
         * 字节缓冲流
         *   字节缓冲 输入流   BufferedInputStream
         *       构造方法:
         *       public   BufferedInputStream(InputStream in)
         *
         *   字节缓冲 输出流   BufferedOutputStream
         *       构造方法:
         *        public   BufferedOutputStream(OutputStream out)
         *
         *  提高读写的速度,比字节流读写更高效
         *  缓冲流: 底层使用的还是字节流实现,仅仅是比字节流多了一块缓冲区
         *
         *  小结:
         *      输入流
         *       FileInputStream
         *        int read() close
         *      输出流
         *       FileOutputStream
         *         write() close
         *         文件复制 : 先读后写
         *      缓冲流
         *          提高读写效率,不能直接操作文件,需要传递字节流
         *          字节缓冲输入流: BufferedInputStream
         *          字节缓冲输出流: BufferedOutputStream
         *       文件拷贝: 四种拷贝方式
         *          字节流一次读写一个字节
         *          字节流一次读写一个字节数组
         *          缓冲流一次读写一个字节
         *          缓冲流一次读写一个字节数组
         *
         */

        //复制文件

        FileInputStream fis = new FileInputStream("D:\\it\\a.txt");
        //创建字节缓冲输入流对象
        BufferedInputStream bis= new BufferedInputStream(fis);
        //输出流
        FileOutputStream fos = new FileOutputStream("D:\\kk\\d.txt");
        //创建字节缓冲输出流
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        //循环读取
        byte[] bys=new byte[1024];
        //记录读取的数据字节总数
        int len;
        //如果在读入的时候使用时字节数组读的
        //数据会保存在字节数据中
        while( (len=bis.read(bys))!=-1 ){
            bos.write(bys,0,len);
        }
        //释放资源
        bos.close();
        bis.close();
        fos.close();
        fis.close();


    }
}
